import shutil
s = open('folder1/fsrc.txt','r')
d = open('folder1/fdst.txt','w')
# shutil.copyfileobj(s,d,16*1024)

'''
复制文件 src 的内容到 dst 并返回 dst，如果 dst 不存在则自动创建，src 和 dst 是字符串类型的路径名，
如果 src 和 dst 指向同一个文件，抛出 SameFileError。
'''
# shutil.copyfile('folder1/fsrc.txt','folder1/fdst.txt')

'''
复制文件 src 的权限到 dst，src 和 dst 是字符串类型的路径名，
如果 follow_symlinks 为 False 且 src 和 dst 都是符号链接，将修改 dst 符号链接文件而非源文件的权限。
'''
# shutil.copymode('folder1/fsrc.txt','folder1/fdst.txt')

'''
复制 src 的权限、最后访问时间、最后修改时间以及标志到 dst，
src 和 dst 是字符串类型的路径名，可以是文件或目录，在Linux平台上还会复制扩展属性
'''
# shutil.copystat('folder1/fsrc.txt','folder1/fdst.txt')

'''
复制文件 src 的内容和权限到 dst，dst 可以是文件或文件夹，如果是文件，函数的返回值就是 dst，
如果是文件夹，函数的返回值就是 src 的文件名与 dst 的路径拼接，src 和 dst 都是字符串类型，如果 dst 指向一个文件夹，则创建与 src 同名的新文件
'''
# dst 为文件
# shutil.copy('folder1/fsrc.txt','folder1/fdst.txt')

# dst 为文件夹
# shutil.copy('folder1/fsrc.txt', 'tmp/')

'''
该方法会保留 src 的所有元数据(如创建时间、修改时间等)，
其他与 copy() 相同，当 follow_symlinks 为 False 且 src 为软链接时，dst 将作为软链接被创建并拷贝 src 的所有元数据到 dst。
'''
# shutil.copy2('folder1/fsrc.txt','folder1/fdst.txt')

# 创建并返回一个函数，可传递到 copytree() 中作为 ignore 参数的值，忽略满足匹配模式的文件和目录。
# shutil.ignore_patterns('tmp*')

'''
递归复制以 src 为根目录的整个目录树，返回目标目录 dst，dst 必须是不存在的目录，
它和它不存在的父目录都将被创建，使用 copystat() 复制目录元数据，使用 copy2() 复制文件内容和元数据
'''
# shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns( 'tmp*'))

# 删除目录，path 必须指定一个目录
# shutil.rmtree("folder2")

# 移动文件或目录到目标位置，如果目标位置 dst 是一个存在的目录，将 src 移动到 dst 路径下。
# shutil.move('folder1/', 'folder2/')

# 检测磁盘使用信息，返回值为元组
# print(shutil.disk_usage("folder1"))

# 返回 cmd 调用的可执行文件路径，没有返回 None。mode：用于判断文件是否存在或可执行，path：cmd 的查找路径
# print(shutil.which('java'))

# 查询终端大小。
# print(shutil.get_terminal_size())

